package com.upload;

import com.utils.StreamUtils;

import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;

/**
 * 1. 文件上传的服务器端
 */
public class TcpFileUploadServer {
    public static void main(String[] args) throws IOException {
        // 1. 在服务器端，监听本机的 8888端口
        ServerSocket serverSocket = new ServerSocket(8888);
        System.out.println("服务器端在8888端口监听...........");
        // 2. 等待客户端链接
        Socket socket = serverSocket.accept();
        System.out.println("有客户端连接了........");

        // 3.读取客户端发送的文件数据
        BufferedInputStream bis = new BufferedInputStream(socket.getInputStream());
        // 3.1 获取数据
        byte[] bytes = StreamUtils.streamToByteArray(bis);
        // 3.2 将字节数组，写入到指定路径
        String path ="E:\\java\\study\\wo_de_bi_ji\\tuling_kecheng\\code\\my_socket\\socket01\\src\\qie2.png";
        BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(path));
        bos.write(bytes);
        bos.close();

        // 4. 向客户端 回复 收到文件
        // 通过 socket 获取到输出流（以字符的方式）
        BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
        bufferedWriter.write("收到图片");
        bufferedWriter.flush();// 把内容刷新到 socket 通道中
        socket.shutdownOutput(); // 设置写入结束标记

        // 关闭其他资源
        bufferedWriter.close();
        bis.close();
        socket.close();
        serverSocket.close();
    }
}
